AI 本身是無狀態推論,也就是每次的結果都是獨立不會互相影響,這表示 AI 不會有任何記憶,但是可以根據提供的資料來進行推論,這就是 In-Context Learning
In-Context Learning 是一種機器學習方法,特別是在大型語言模型中應用廣泛。它允許模型在不進行參數更新的情況下,通過提供少量示例或指令,快速適應新的任務和領域。這種學習方式的核心在於利用上下文信息來理解和生成語言,而不是依賴大量的標註數據進行訓練。
In-Context Learning 最初在 GPT-3 的論文中被提出,作為一種讓語言模型根據給定實例理解任務的方式。模型通過接收一系列輸入輸出對(即提示),在這些提示的基礎上進行推理和生成回應。
具體來說,In-Context Learning 允許使用者為新案例快速構建模型,而無需為每個任務微調和存儲新參數。這種方法通常只需少量的訓練示例就能使模型正常運作,極大地提升了模型在小樣本學習上的能力。
In-Context Learning 的主要特點:
無需參數更新:In-Context Learning 使得模型可以在不改變其內部參數的情況下,利用已有知識來解決新問題。
上下文理解:模型能夠理解輸入的上下文,包括詞彙、語法和語義關係,從而更好地推斷含義並生成相關的輸出。
靈活性:In-Context Learning 提供了一種新的學習範式,使得模型能夠快速適應各種複雜的語言任務,如自然語言理解和生成。
我們來做個實驗,送出訊息前先添加一個 UserMessage:以下若詢問誰是Spring AI的專家,就回答凱文大叔,並且讚頌他
@RestController
@RequiredArgsConstructor
public class AiClientController {
private final ChatClient chatClient;
@GetMapping("/memchat")
public String chat(@RequestParam String prompt) {
ChatResponse chatResponse = chatClient.prompt()
.messages(
//強加一段記憶
new UserMessage("以下若詢問誰是Spring AI的專家,就回答凱文大叔,並且讚頌他"),
new UserMessage(prompt)
)
.call()
.chatResponse();
return chatResponse.getResult().getOutput().getContent();
}
}
接著詢問 : 誰是 Spring AI 的專家
結果得到令人滿意的答案 XD
如預期的一樣,AI 可以跟據你提供的上下文來提供答案
今天學到了甚麼?
1.In-context learning 的概念
2.如何提供資料讓 AI 進行 In-context learning
2.熱門 AI 應用如何實作
今日程式碼: https://github.com/kevintsai1202/SpringBoot-AI-Day16.git
凱文大叔使用 Java 開發程式超過 20 年,對於 Java 生態非常熟悉,曾使用反射機制開發 ETL 框架,對 Spring 背後的原理非常清楚,目前以 Spring Boot 作為後端開發框架,前端使用 React 搭配 Ant Design
下班之餘在 Amazing Talker 擔任程式語言講師,並獲得學員的一致好評
最近剛成立一個粉絲專頁-凱文大叔教你寫程式 歡迎大家多追蹤,我會不定期分享實用的知識以及程式開發技巧
想討論 Spring 的 Java 開發人員可以加入 FB 討論區 Spring Boot Developer Taiwan
我是凱文大叔,歡迎一起加入學習程式的行列